package com.haixiaoke.mapper;

import com.haixiaoke.domain.SmartLock;

import java.util.List;

/**
 * 智能锁设备Mapper接口
 * 
 * @author xiaolong
 * @date 2023-05-25
 */
public interface SmartLockMapper {
    /**
     * 查询智能锁设备
     * 
     * @param lockId 智能锁设备主键
     * @return 智能锁设备
     */
    SmartLock selectSmartLockByLockId(Long lockId);

    /**
     * 查询智能锁设备列表
     *
     * @return 智能锁设备集合
     */
    default List<SmartLock> selectSmartLockList() {
        return selectSmartLockList(null);
    }

    /**
     * 查询智能锁设备列表
     * 
     * @param smartLock 智能锁设备
     * @return 智能锁设备集合
     */
    List<SmartLock> selectSmartLockList(SmartLock smartLock);

    /**
     * 新增智能锁设备
     * 
     * @param smartLock 智能锁设备
     * @return 结果
     */
    int insertSmartLock(SmartLock smartLock);

    /**
     * 修改智能锁设备
     * 
     * @param smartLock 智能锁设备
     * @return 结果
     */
    int updateSmartLock(SmartLock smartLock);

    /**
     * 删除智能锁设备
     * 
     * @param lockId 智能锁设备主键
     * @return 结果
     */
    int deleteSmartLockByLockId(Long lockId);

    /**
     * 批量删除智能锁设备
     * 
     * @param lockIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteSmartLockByLockIds(Long[] lockIds);

    /**
     * 校验智能锁SN号是否唯一
     * @param sn 智能锁sn
     * @return
     */
    int selectSmartLockBySn(String sn);

    /**
     * 根据智能锁SN号查询智能锁信息
     * @param sn 智能锁SN号
     * @return
     */
    SmartLock selectBySn(String sn);

    int deleteSmartLockBySn(String sn);

    List<SmartLock> selectSmartLockListBySns(List<String> sns);
}
